// 给定一个数组，将数组中的元素向右移动 k 个位置，其中 k 是非负数。
// 要求使用空间复杂度为 O(1) 的 原地 算法。

// 暴露接口
const rotate = function (nums: number[], k: number): number[] {
    k = k % nums.length;// 注意这里，k可能不合法，需要化简
    rotateTraverse(nums, 0, nums.length - 1);
    rotateTraverse(nums, 0, k - 1);
    rotateTraverse(nums, k, nums.length - 1);
    return nums;
};

// 翻转辅助方法
function rotateTraverse(nums: number[], startIndex: number, endIndex: number) {
    let left: number = startIndex;
    let right: number = endIndex;
    while (left < right) {
        let temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
        left++;
        right--;
    }
}


// 难度并不大，需要多在纸上写写画画，比较类似于找规律的题目